home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Design
/
WB Collection.iso
/
workbench werkzeuge
/
workbench erweiterungen
/
avwm-0.4
/
wbwm.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-04-07
|
3KB
|
118 lines
/*
wbwm.c - Workbench Window Monitor
5/10/93 Bernhard Fastenrath
*/
#include <dos.h>
#include <signal.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include "wbwm.h"
#include "jumptable.h"
#if 0
#define SEM_P struct SignalSemaphore *jt;\
if (jt = FindSemaphore (JTName))\
ObtainSemaphoreShared (jt);\
else\
return NULL
#define SEM_V ReleaseSemaphore (jt)
#else
#define SEM_P while(0)
#define SEM_V while(0)
#endif
DECLARE (CloseWindow)
DECLARE (MoveWindow)
DECLARE (OpenWindow)
DECLARE (SizeWindow)
DECLARE (WindowToBack)
DECLARE (WindowToFront)
DECLARE (ActivateWindow)
DECLARE (MoveWindowInFrontOf)
DECLARE (ChangeWindowBox)
DECLARE (ZipWindow)
DECLARE (OpenWindowTagList)
extern UBYTE *JTName;
extern struct IntuitionBase *IntuitionBase;
extern ULONG WMSig;
struct LVOTable LVOArray[] = { FUNCTIONS };
static int event[] = { WINDOW_EVENTS };
static int monitor_on = 0;
static struct Task *my_task = NULL;
int
start_window_monitor ()
{
monitor_on = 1;
my_task = FindTask (NULL);
return InstallWedge ();
}
void
stop_window_monitor ()
{
if (monitor_on)
{
monitor_on = 0;
RemoveWedge ();
}
}
/* It wouldn't be a good idea to call other functions because this
code may be executed by any task and the other task's stack is used.
*/
void __saveds monitor_event (int event) { Signal (my_task, WMSig); }
/*
* Intercepting Functions
*/
LONG ASM
CloseWindowR (ARGS)
{ int x; SEM_P; x = CloseWindowO (ALIST); monitor_event ( WE_CloseWindow ); SEM_V; return x; }
LONG ASM
MoveWindowR (ARGS)
{ int x; SEM_P; x = MoveWindowO (ALIST); monitor_event ( WE_MoveWindow ); SEM_V; return x; }
LONG ASM
OpenWindowR (ARGS)
{ int x; SEM_P; x = OpenWindowO (ALIST); monitor_event ( WE_OpenWindow ); SEM_V; return x; }
LONG ASM
SizeWindowR (ARGS)
{ int x; SEM_P; x = SizeWindowO (ALIST); monitor_event ( WE_SizeWindow ); SEM_V; return x; }
LONG ASM
WindowToBackR (ARGS)
{ int x; SEM_P; x = WindowToBackO (ALIST); monitor_event ( WE_WindowToBack ); SEM_V; return x; }
LONG ASM
WindowToFrontR (ARGS)
{ int x; SEM_P; x = WindowToFrontO (ALIST); monitor_event ( WE_WindowToFront ); SEM_V; return x; }
LONG ASM
ActivateWindowR (ARGS)
{ int x; SEM_P; x = ActivateWindowO (ALIST); monitor_event ( WE_ActivateWindow ); SEM_V; return x; }
LONG ASM
MoveWindowInFrontOfR (ARGS)
{ int x; SEM_P; x = MoveWindowInFrontOfO (ALIST); monitor_event ( WE_MoveWindowInFrontOf ); SEM_V; return x; }
LONG ASM
ChangeWindowBoxR (ARGS)
{ int x; SEM_P; x = ChangeWindowBoxO (ALIST); monitor_event ( WE_ChangeWindowBox ); SEM_V; return x; }
LONG ASM
ZipWindowR (ARGS)
{ int x; SEM_P; x = ZipWindowO (ALIST); monitor_event ( WE_ZipWindow ); SEM_V; return x; }
LONG ASM
OpenWindowTagListR (ARGS)
{ int x; SEM_P; x = OpenWindowTagListO (ALIST); monitor_event ( WE_OpenWindowTagList ); SEM_V; return x; }